论文笔记02:Comparative Analysis of Energy-Efficient Scheduling Algorithms for Big Data Applications

发表于2018.7

一、解决的问题

Spark集群在反网络犯罪中的能耗问题

二、提出的方法

2.1 创新点

为了避免服务级别协议违反执行时间,提出了一种最优的任务调度算法,其具有通过权衡执行时间和能量消耗的最后期限约束,目的是去最小化大数据处理中的能耗问题。该最优算法能够找到接近最优的任务调度,以在小的shuffle分区中权衡消耗的能量和响应时间的优势。

2.2 结果

对比Spark内嵌的FIFO和FAIR算法,能耗上都有优化。

三、动机

  • 对于数据中心,不需要一味降低任务的执行时间。而在是截止完成时间之前,只需要提供按需的服务,更多的关心是能耗上的优化。

四、相关工作

考虑的主要因素 文章 方法
云计算当中优化物理机上的能耗问题
[14] 提出了考虑CPU,磁盘,内存,网络对于刀片服务器的能耗模型
[16] 提出了考虑CPU,磁盘,内存,网络,风扇对所有服务器的能耗的直接测量
Spark调度中主要考虑的是最小化工作执行的完工时间
[6] 他们模拟了执行器的应用程序成本和完成时间,因此提供了细粒度的资源分配方案
[19] 通过收集在同一个应用下的不同stage执行时间来预测应用的执行时间
[20] 提出了基于输入数据量,底层集群节点的大小和迭代次数的作业完成时间模型。
[18] 为了预测具有未知群集配置的大数据应用程序的执行时间,提出基于应用简档数据构建多个多项式回归模型
[21] 为Spark在线分析提供QoS保证,提出了基于熵在线并行分析调度

应对上述三个挑战的三种应对策略:

  • Spark的executors为了及时满足它们资源预留应将被放置到合适的节点上,避免太长时间的等待和低资源利用率;
  • 分配用于减少任务的资源应根据其随时间变化的需求进行重新平衡,以避免在将任何Spark应用程序提交到群集时浪费资源;
  • 在考虑Spark和MapReduce应用程序的位置感知的时候,为了减少局部性感知的竞争,Spark和MapReduce应用程序的任务分配策略都应该优化。

五、算法

算法1



适合的两个场景:

  1. 工作量是计算密集型的,任务数量很大;
  2. 能耗低要求较高,对于SLA截止时间要求较低。

算法2

算法B权衡能耗和执行时间,特别对于小shuffle的分区的情况下。

在小分区的情况下,算法B将任务分配给集群中最佳的一半执行程序,并尝试平衡在执行程序的另一半中花费的执行时间。

算法3

算法3将所有任务分成两个集合:

  • Set0:包含所有需要被探测的任务和当前p和e为0的任务;
  • Distribute:包含那些不需要被探测的任务。

RunTimeEachExe:记录着最优部分的执行时间

六、实验

基于HiBench的基准实验,在三种工作负载上实验:

  • Sort
  • TeraSort
  • PageRank

七、结果分析

算法B在保证有效降低能耗的前提下,优化了算法A的执行时间。因为基于贪心策略的算法A尽可能地将任务分配给评估标准的最佳过程,导致单个节点的过载并因此导致总体执行时间的增加。

算法B使得Shuffle分区的数量从10到40变化,确保可以使用集群中一半的执行程序。因此,算法B减少了单个节点上的负载,并且还加快了作业完成时间。

算法B的两点改进:

  • 任务分配策略
  • 不考虑数据局部性,以确保任务可以均匀地分布到最佳的一半过程

总而言之,算法B更加适合的场景:

  • 工作负载更少的任务
  • SLA的截止时间要求较高,节能要求较为宽松